package priv.pattern.decorator;

// 业务接口
interface Service {
    void test();
}
// 业务实现
class ServiceImpl implements Service {
    @Override
    public void test() {
    }
}
// 装饰器
class Decorator implements Service {
    private Service service;

    public Decorator(Service service) {
        this.service = service;
    }

    @Override
    public void test() {
        // 调用被装饰对象的业务方法
        service.test();
    }
}
// 装饰器详细实现
class DecoratorImpl extends Decorator {
    public DecoratorImpl(Service service) {
        super(service);
    }

    @Override
    public void test() {
        // 对原有功能进行扩展
        System.out.println("装饰方法，在原有功能之前");
        super.test();
        System.out.println("装饰方法，在原有功能之后");
    }
}